package hotel.dao;

import java.util.LinkedList;
import java.util.List;

import hotel.tipos.Conta;
import hotel.tipos.ItemConta;
import hotel.util.HibernateUtil;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class ItemContaDao {
	public static int create(ItemConta item, Conta c){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
				
				session.beginTransaction();

		        Integer id = (Integer) session.save(item);
		        
		        // Adiciona ao conta
		        c.getItens().add(item);
		        
		        session.getTransaction().commit();
		        
		        return id.intValue();
			}
	
	@SuppressWarnings("unchecked")
	public static LinkedList<ItemConta> listarServicos() {
		// Cria uma sessão
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		// inicia a transação
		session.beginTransaction();
		// Cria uma lista para retornar
		LinkedList<ItemConta> itens = null;
		
		try{
			itens = new LinkedList<ItemConta>(session.createQuery("from ItemConta").list());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return itens;
	}
	
	public static ItemConta buscaItemConta(int id){
		// Cria uma sessão
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		// inicia a transação
		session.beginTransaction();
		// Cria a variável de retorno
		ItemConta item = null;
		
		try {
			Query q = session.createQuery("select i from ItemConta i where i.id = :id");
			q.setInteger("id", id);
			item = (ItemConta) q.list().get(0);
		} catch (HibernateException e){
			e.printStackTrace();
		}
		
		return item;
	}
}
